// This file is part of OpenTSDB.
// Copyright (C) 2017 TeleDB Development Group.
//
// This program is free software: you can redistribute it and/or modify it
// under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation, either version 2.1 of the License, or (at your
// option) any later version.  This program is distributed in the hope that it
// will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty
// of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser
// General Public License for more details.  You should have received a copy
// of the GNU Lesser General Public License along with this program.  If not,
// see <http://www.gnu.org/licenses/>.
package net.opentsdb.tsd.http;

import java.util.List;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder;
import net.opentsdb.query.pojo.Validatable;

@JsonIgnoreProperties(ignoreUnknown = true)
@JsonDeserialize(builder = UpdateTokenData.Builder.class)
public class UpdateTokenData {
    private List<Token> adminTokens;
    private List<Token> userTokens;

    public UpdateTokenData(Builder builder) {
        adminTokens = builder.adminTokens;
        userTokens = builder.userTokens;
    }

    public List<Token> getAdminTokens() {
        return adminTokens;
    }

    public List<Token> getUserTokens() {
        return userTokens;
    }

    /** @return A new builder for the downsampler */
    public static Builder Builder() {
        return new Builder();
    }

    /**
     * A builder
     */
    @JsonIgnoreProperties(ignoreUnknown = true)
    @JsonPOJOBuilder(buildMethodName = "build", withPrefix = "")
    public static final class Builder {
        @JsonProperty
        private List<Token> adminTokens;
        @JsonProperty
        private List<Token> userTokens;

        public void setAdminTokens(List<Token> adminTokens) {
            this.adminTokens = adminTokens;
        }

        public void setUserTokens(List<Token> userTokens) {
            this.userTokens = userTokens;
        }

        public UpdateTokenData build() {
            return new UpdateTokenData(this);
        }
    }
}
